package cn.byapps.hw.service;

import cn.byapps.hw.entity.Student;
import cn.byapps.hw.vo.StudentVO;

import java.util.List;

public interface StudentService {
    /**
     * 添加学生
     *
     * @param student 学生实体
     */
    void save(Student student);

    /**
     * 统计所有学生
     *
     * @return
     */
    int total();

    /**
     * 根据ID删除
     *
     * @param id 学生ID
     */
    void deleteById(String id);

    /**
     * 更新学生
     *
     * @param student 学生实体
     */
    void update(Student student);

    /**
     * 根据班级实体和学生实体，从该班级中添加该学生
     *
     * @param student 学生实体
     * @param clazzId 班级实体
     */
    void addByClazz(Student student, Integer clazzId);

    /**
     * 根据班ID和学生集合，该班级批量添加学生
     *
     * @param students
     * @param clazzId
     */
    void batchAdd(List<Student> students, Integer clazzId);

    /**
     * 根据班级ID获取该班级拥有多少名学生
     *
     * @param clazzId
     * @return
     */
    int total(Integer clazzId);

    /**
     * 根据条件收搜后，统计学生数量
     *
     * @param search
     * @return
     */
    int totalBySearch(String search);

    /**
     * 分页查询
     *
     * @param pos  下标 从0
     * @param rows 查询行数
     * @return
     */
    List<StudentVO> findVO(Integer pos, Integer rows);

    /**
     * 根据条件分页查询
     *
     * @param pos    下标 从0
     * @param rows   查询行数
     * @param search 查询条件
     * @return
     */
    List<StudentVO> findVO(Integer pos, Integer rows, String search);

    /**
     * 根据班级分页查询学生
     *
     * @param pos     下标 从0
     * @param rows    查询行数
     * @param clazzId 查询条件
     * @return
     */
    List<StudentVO> findVO(Integer pos, Integer rows, Integer clazzId);
}
